package main

import (
	"fmt"
	"sync"
)

func main1101() {
	//互斥锁
	var m sync.Mutex
	wg := sync.WaitGroup{}
	//add(添加) done(完成) wait(等待)
	count := 0
	for i := 0; i < 10000; i++ {
		wg.Add(1)
		go func() {
			m.Lock()         //加锁
			defer m.Unlock() //解锁
			//如果不加锁 count的累加结果可能小于10000（因为多个goroutine会发生资源竞争）
			defer wg.Done() //标记执行完成
			//数据处理
			count++
		}()
	}

	wg.Wait()
	fmt.Println(count)
	fmt.Println("程序继续执行")
}

func main() {
	//msg的 cap=9 len=9
	msg := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}

	sli1 := msg[2:3:4] //(9-)
	sli2 := msg[2:3]
	//slice容量=max-low （9-2=7）

	//a:=make([]int,2,2)
	fmt.Println(cap(sli1))
	fmt.Println(cap(sli2))
}
